home *** CD-ROM | disk | FTP | other *** search
- eval(r1, g1, b1, r2, g2, b2)
- int r1, g1, b1, r2, g2, b2;
- {
- int val;
- #if 1
- int y1, y2, dr, dg, db, dy;
-
- /* normalize */
- y1 = r1 * r1 + g1 * g1 + b1 * b1;
- if (y1 != 0){
- r1 = r1 * r1 * 1000;
- r1 /= y1;
- g1 = g1 * g1 * 1000;
- g1 /= y1;
- b1 = b1 * b1 * 1000;
- b1 /= y1;
- }
- y2 = r2 * r2 + g2 * g2 + b2 * b2;
- if (y2 != 0){
- r2 = r2 * r2 * 1000;
- r2 /= y2;
- g2 = g2 * g2 * 1000;
- g2 /= y2;
- b2 = b2 * b2 * 1000;
- b2 /= y2;
- }
-
- dr = r2 - r1;
- dr *= dr;
- dg = g2 - g1;
- dg *= dg;
- db = b2 - b1;
- db *= db;
- dy = y2 - y1;
- dy *= dy;
- dy /= 1000;
- val = (10*dr + 3*dg + 3*db) + 10*dy;
- #endif
- #if 0
- int v1, v2, val;
- int y1, cr1, cb1, y2, cr2, cb2;
- int dcr, dcb, dy;
-
- /* RGB --> YCrCb */
- y1 = g1 * 587 + r1 * 299 + b1 * 144;
- cr1 = g1 * -419 + r1 * 500 + b1 * -81;
- cb1 = g1 * -332 + r1 * -169 + b1 * 500;
- y2 = g2 * 587 + r2 * 299 + b2 * 144;
- cr2 = g2 * -419 + r2 * 500 + b2 * -81;
- cb2 = g2 * -332 + r2 * -169 + b2 * 500;
-
- dcr = cr2 - cr1;
- dcr *= dcr;
- dcr /= 1000;
- dcb = cb2 - cb2;
- dcb *= dcb;
- dcb /= 1000;
- dy = y2 - y1;
- dy *= dy;
- dy /= 1000;
-
- val = dcr + dcb + dy * 2;
- #endif
- #if 0
- int y1, y2, dr, dg, db, dy;
-
- /* normalize */
- y1 = g1 * 587 + r1 * 299 + b1 * 144;
- if (y1 != 0){
- r1 = r1 * 299 * 1000;
- r1 /= y1;
- g1 = g1 * 587 * 1000;
- g1 /= y1;
- b1 = b1 * 144 * 1000;
- b1 /= y1;
- }
- y2 = g2 * 587 + r2 * 299 + b2 * 144;
- if (y2 != 0){
- r2 = r2 * 299 * 1000;
- r2 /= y2;
- g2 = g2 * 587 * 1000;
- g2 /= y2;
- b2 = b2 * 144 * 1000;
- b2 /= y2;
- }
-
- dr = r2 - r1;
- dr *= dr;
- dg = g2 - g1;
- dg *= dg;
- db = b2 - b1;
- db *= db;
- dy = y2 - y1;
- dy *= dy;
- dy /= 1000;
- val = (dr + dg + db)*110 + dy*10;
- #endif
- return (val);
- }
-